//基于axios二次封装
//请求拦截
//响应拦截
import axios from 'axios';
//@ts-ignore 忽略ts校验
import {routerLogin} from '@/router/routerUtils'
//@ts-ignore 忽略ts校验
import {getToken,removeUser,removeToken} from "@/store/modules/userLocalStore";
export const BASEURL = "/api";


// 创建一个axios实例，配置属性
const request = axios.create({
    //基础url
    baseURL: BASEURL,
    // 超时时间
    timeout: 5000
});
// 请求拦截器
request.interceptors.request.use((config) => {
    let token:string = getToken();
    if (token != null && token != ''){
        config.headers.X_AUTH_TOKEN = token;
    }
    //必须返回，不然不能发送请求
    return config;
});
// 响应拦截
request.interceptors.response.use((response) => {
    console.log("响应结果", response)
    // 200正常相应
    switch (response.data.code) {
        case 200:
            return response.data.data;
            //99是未登录状态，删除本地用户信息，删除token，并跳转登录页
        case 99:
            alertError(response.data.message)
            removeUser();
            removeToken();
            routerLogin();
            break;
            //其他异常情况直接打印错误信息 并中断流程
        default:
            alertError(response.data.message);
            break;
    }
    return Promise.reject(new Error(response.data.message))
}, (error) => {
    console.log("异常信息" + error)
    let code = error.response.status;
    switch (code) {
        case 404:
            alertError("页面找不到啦");
            break;
        case 500 | 501 | 502 | 503 | 504 | 505:
            alertError("服务器异常，请联系管理员");
            break;
    }
    return Promise.reject(new Error(error.message))
});

// 对外暴露
export default request;

export const alertOk = (message: string) => {
    //具体实现成功提示的方法
    // ElMessage({
    //     message: message,
    //     type: 'success',
    //     duration: 2000
    // })
    alert(message)
}

export const alertError = (message: string) => {
    //具体实现异常提示的方法
    // ElMessage({
    //     message: message,
    //     type: 'error',
    //     duration: 2000
    // })
    alert(message)
}


